import { defineConfig, loadEnv } from "vite";
import {
  createViteProxy,
  getRootPath,
  getSrcPath,
  setupVitePlugins,
  viteDefine,
} from "./build";
import { getServiceEnvConfig } from "./.env-config";

export default defineConfig((configEnv) => {
  const viteEnv = loadEnv(
    configEnv.mode,
    process.cwd()
  ) as unknown as ImportMetaEnv;

  const rootPath = getRootPath();
  const srcPath = getSrcPath();

  const isOpenProxy = viteEnv.VITE_HTTP_PROXY === "Y";
  const envConfig = getServiceEnvConfig(viteEnv);

  return {
    base: viteEnv.VITE_BASE_URL,
    resolve: {
      alias: {
        "~": rootPath,
        "@": srcPath,
      },
    },
    define: viteDefine,
    plugins: setupVitePlugins(viteEnv),
    server: {
      host: "0.0.0.0",
      port: 3200,
      open: true,
      proxy: createViteProxy(isOpenProxy, envConfig),
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@use "./src/styles/scss/global.scss" as *;`,
        },
      },
    },
    optimizeDeps: {
      include: ["@better-scroll/core", "echarts"],
    },
    build: {
      reportCompressedSize: false,
      sourcemap: false,
      commonjsOptions: {
        ignoreTryCatch: false,
      },
    },
  };
});
